<?php
namespace WeChatPay\Request;

use function WeChatPay\FilterParam;
use function WeChatPay\FuncReturn;

/**
 * 查询单笔退款API 商户退款单号
 * 提交退款申请后，通过调用该接口查询退款状态。退款有一定延时，建议在提交退款申请后1分钟发起查询退款状态，一般来说零钱支付的退款5分钟内到账，银行卡支付的退款1-3个工作日到账。
 * Class WeChatPayTradeOutRefundNoRefundQueryRequest
 * @package WeChatPay\Request
 */
class WeChatPayTradeOutRefundNoRefundQueryRequest extends AbstractBaseRequest
{
    protected $apiUri = "v3/refund/domestic/refunds/%s";

    /**
     * 请求方式
     * @var string
     */
    public $requestType = 'get';

    /**
     * 必填参数列表
     * @var array
     */
    protected $mustAddParams = ['out_refund_no'];

    /**
     * 属性映射方法名称
     * @var array
     */
    protected $propertyMapSetFunction = [
        'out_refund_no'    =>  'setOutRefundNo'
    ];

    /**
     * 商户退款单号:商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
     * @var string
     */
    protected $out_refund_no = "";

    /**
     * 获取接口请求地址
     * @return string
     */
    public function getApiUri()
    {
        return sprintf($this->apiUri, $this->out_refund_no);
    }

    /**
     * 获取配置基础参数列表
     * @return array
     */
    public function getBaseParams(): array {
        return [];
    }

    /**
     * 获取商户退款单号
     * @return string
     */
    public function getOutRefundNo(): string
    {
        return $this->out_refund_no;
    }

    /**
     * 设置商户退款单号
     * @param string $out_trade_no
     */
    public function setOutRefundNo(string $out_refund_no): void
    {
        $this->addPathParams('out_refund_no');
        $this->out_refund_no = $out_refund_no;
    }
}